let list = [{ name: "张三", age: 18 }]; //数据库的数据
let user = { username: "张三", age: 18 }; //前端传的user数据
//=========================================================================
function router_login(user) {
    return controller_login(user);
}

function controller_login(user) {
    return model_login(user);
}

function model_login(user) {
    if (user.username == data[0].name) {
        return data;
    }
    return [];
}

//同步调用获取数据
let data = router_login(user);
console.log(data);
//=========================================================================

//=========================================================================

function router_login(user, callback) {
    controller_login(user, (err, result) => {
        callback(err, result); // 向上抛数据;                 步骤6 向上抛数据
    }); //调用函数， 传了两个参数， 一个用户对象， 一个业务函数    步骤1：调用控制层的login
}

function controller_login(user, callback) {
    model_login(user, (err, result) => {
        callback(err, result); //向上抛数据                        步骤5   向上抛数据
    }); //调用函数， 传了两个参数， 一个用户对象， 一个业务函数    步骤2：继续 调用控制层的login
}

function model_login(user, callback) {
    if (user.username == data[0].name) {
        callback(null, data); //如果找到这个用户，执行传过来的这个函数, 把数据结果传递过去     步骤4  向上抛数据
        return;
    }
    callback("错误：找不到这个用户", null); //如果没找到这个用户，执行传过来的这个函数, 把数据结果传递过去  步骤4  向上抛数据
}

// 异步调用
router_login(user, (err, result) => {
    console.log(err, result); // 步骤7  得到数据
});